// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "content/shell/browser/shell_access_token_store.h"

#include "base/bind.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/utf_string_conversions.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/storage_partition.h"
#include "content/shell/browser/shell_browser_context.h"

namespace content {

ShellAccessTokenStore::ShellAccessTokenStore(
    content::ShellBrowserContext* shell_browser_context)
    : shell_browser_context_(shell_browser_context)
    , system_request_context_(NULL)
{
}

ShellAccessTokenStore::~ShellAccessTokenStore()
{
}

void ShellAccessTokenStore::LoadAccessTokens(
    const LoadAccessTokensCallback& callback)
{
    BrowserThread::PostTaskAndReply(
        BrowserThread::UI,
        FROM_HERE,
        base::Bind(&ShellAccessTokenStore::GetRequestContextOnUIThread,
            this,
            shell_browser_context_),
        base::Bind(&ShellAccessTokenStore::RespondOnOriginatingThread,
            this,
            callback));
}

void ShellAccessTokenStore::GetRequestContextOnUIThread(
    content::ShellBrowserContext* shell_browser_context)
{
    system_request_context_ = BrowserContext::GetDefaultStoragePartition(shell_browser_context)->GetURLRequestContext();
}

void ShellAccessTokenStore::RespondOnOriginatingThread(
    const LoadAccessTokensCallback& callback)
{
    // Since content_shell is a test executable, rather than an end user program,
    // we provide a dummy access_token set to avoid hitting the server.
    AccessTokenMap access_token_map;
    access_token_map[GURL()] = base::ASCIIToUTF16("chromium_content_shell");
    callback.Run(access_token_map, system_request_context_.get());
    system_request_context_ = NULL;
}

void ShellAccessTokenStore::SaveAccessToken(
    const GURL& server_url, const base::string16& access_token)
{
}

} // namespace content
